iT邦幫忙

DAY 17
0

Ruby on Rails 實戰聖經 - 初心者的30天學習記錄系列 第 17

Ruby on Rails (17) - Blocks、Procs

  • 分享至 

  • xImage
  •  

Ruby的Blocks、Procs在其他的語言裡面,它們的名字叫做Anonymous Functions(匿名函數)
它們比較像是一個暫時性的功能,用來處理一些特別的狀況。

Blocks(區塊)
Blocks是暫時性的執行區塊碼,之前的例子已經用過了。
如app/view/index.html.erb

每一筆@guest的資料都會執行一次|guest|......這個Blocks的程式碼。

<% @guest.each do |guest| %>
<li>
<%= guest.title %>
<%= link_to 'Show', :controller => 'guests', :action => 'show', :id => guest %>
<%= link_to 'Edit', :controller => 'guests', :action => 'edit', :id => guest %>
<%= link_to 'Delete', :controller => 'guests', :action => 'destroy', :id => guest %>
</li>
<% end %>

Procs
Procs則是讓我們儲存會重複使用很多次的程式碼,例如

#印出大於30歲user的姓名
User.where("age > 30").each {|user| puts user.name}
#印出年齡介於30到60之間的user的姓名
User.where("age > 30 AND age <60").each {|user| puts user.name}

其中{|user| puts user.name}重複出現了兩次
我們就可以把它儲存成一個Procs讓我們不用做重複的事。

printer = Procs.new {|user| puts user.name}
User.where("age>30").each(&printer)
User.where("age>30 AND age<60").each(&printer)

Blocks是馬上用/只用一次的程式區塊,而Procs就是可以重複多次使用的程式。


上一篇
Ruby on Rails實戰聖經 (16) - ActiveRecord III
下一篇
Ruby on Rails實戰聖經 (18) - Action View Helpers方法
系列文
Ruby on Rails 實戰聖經 - 初心者的30天學習記錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言